package cn.com.huzo.service.trade;

import cn.com.huzo.model.entities.trade.MasterProductionScheduleLinesEntity;
import cn.com.huzo.model.entities.trade.MasterProductionScheduleLinesTrackEntity;
import huzofw.service.GenericManager;
import java.util.List;
import java.util.Map;

/**
 * 产品计划明细管理服务对象接口。
 *
 * @author 吴旭
 */
public interface MasterProductionScheduleLinesManager extends GenericManager<MasterProductionScheduleLinesEntity, String> {

    /**
     * 根据主表标识，取得明细表数据。
     *
     * @param headerKey
     * @return 明细列表数据
     * @throws Exception
     */
    List<MasterProductionScheduleLinesEntity> fetchLinesByHeaderKey(Long headerKey) throws Exception;

    /**
     * 增加产品计划明细。
     *
     * @param itemList 要增加数据列表
     * @return 增加后的数据及唛头号（序列号）
     * @throws java.lang.Exception
     */
    Map<String, Object> insertLines(List<MasterProductionScheduleLinesEntity> itemList) throws Exception;

    /**
     * 更新产品计划明细。
     *
     * @param itemList 要更新的数据列表
     * @return 影响的行数
     * @throws java.lang.Exception
     */
    Integer updateLines(List<MasterProductionScheduleLinesEntity> itemList) throws Exception;

    /**
     * 同步更新产品计划明细的日期。
     *
     * @param instance 要更新的日期数据
     * @return 更新后的产品计划明细
     * @throws java.lang.Exception
     */
    List<MasterProductionScheduleLinesEntity> updateLinesForSync(MasterProductionScheduleLinesEntity instance) throws Exception;

    /**
     * 同步更新跟踪项目计划。
     *
     * @param itemList 要更新跟踪项目
     * @return 更新后的产品计划明细
     * @throws java.lang.Exception
     */
    List<MasterProductionScheduleLinesEntity> syncUpdateTrackItem(List<MasterProductionScheduleLinesTrackEntity> itemList) throws Exception;
}
